package com.chaosj.memory;

/**
 * @className: IToolHandler
 * @description:
 * @author: caoyangjie
 * @date: 2021/8/10
 **/
public interface IToolHandler<Request> {
    /**
     * 命令名称
     * @return
     */
    String name();
    /**
     * 记忆工具描述
     * @return
     */
    String description();

    /**
     * 环绕执行方法
     * @param stringBuffer
     */
    void round(StringBuffer stringBuffer,boolean isBefore);

    /**
     * 执行生成
     * @param req 请求参数
     * @param outBuffer 生成的数据流
     */
    void handler(Request req, StringBuffer outBuffer);

    /**
     * 支持的指令
     * @return
     */
    boolean support(String cmd);

    /**
     * 根据命令参数 生成执行参数对象
     * @param args
     * @return
     */
    Request cmd2Dto(String[] args);
}
